package com.itwxz.forum.domain.po;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ForumUser implements Serializable {
	@Serial
	private static final long serialVersionUID = 1L;

	/** 用户ID */
	@TableId(value = "user_id", type = IdType.AUTO)
	private Long userId;

	/** 用户账号 */
	private String userName;

	/** 用户昵称 */
	private String nickName;

	/** 头像地址 */
	private String avatar;

	/** 登录密码 忽略返回*/
	@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
	private String password;

	/** 邮箱地址 */
	private String email;

	/** 手机号码 */
	private String phoneNumber;

	/** 性别（0男 1女 2未知） */
	private String sex;

	/** 个人简介 */
	private String bio;

	/** 所在城市/地区 */
	private String location;

	/** 用户类型（00普通用户 01官方） */
	private String userType;

	/** 账号状态（0正常 1停用） */
	private String status;

	/** 删除标志（0正常 2删除） */
	@JsonIgnore
	@TableLogic
	private String delFlag;

	/** 被点赞总数 */
	private Integer likeCount;

	/** 发帖数量 */
	private Integer postCount;

	/** 评论数量 */
	private Integer commentCount;

	/** 最后登录IP */
	private String loginIp;

	/** 最后登录时间 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime loginDate;

	/** 创建时间 */
	@TableField(fill = FieldFill.INSERT)
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime createTime;

	/** 更新时间 */
	@TableField(fill = FieldFill.UPDATE)
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime updateTime;

	/** 备注 */
	private String remark;
}